# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/8/27
# @File : TPM（step3）F. Card Substrings(CF).py


def TPM():
    l = 0
    res = 0
    tag = 0#溢出标志tag
    for r in range(n):
        dict2[str1[r]] += 1
        if (dict2[str1[r]] > dict1[str1[r]]):
            tag = 1
        while (tag == 1):
            dict2[str1[l]] -= 1
            if (dict2[str1[r]] <= dict1[str1[r]]):
                tag = 0
            l += 1
        res += (r - l + 1)
    return res

"""
套step2 E题 求区间有多少个不同的数字 的代码框架。
如何判断[l,r]是否符合题意呢?
本来，只用了一个字典，，然后多次深度拷贝重复数每个区间是否超出卡片指标
然后就TLE了。。。。


正确做法：
用两个字典，一个是str2的指标数，不会变。一个来记录当前的区间的各个字符数，会改变
如果遇到一个字符超出指标则说明此区间的右端点超出了指标，然后不断l前进，继续更新第二个字典（减操作）
然后如果刚刚超时指标的字符恢复了，就可以退出while
然后说明当前这个lr区间符合，则此时[l,r],[l+1,r]...[r,r]一定都符合题意

累加(r - l + 1)

"""
if __name__ == "__main__":
    n, m = map(int, input().split())
    str1 = input()
    str2 = input()
    dict1 = dict()
    dict2 = dict()
    for item in str1:
        dict1[item] = 0
        dict2[item] = 0
    for item in str2:
        if (item in str1):
            dict1[item] += 1
    print(TPM())
